https://leetcode.cn/problems/max-area-of-island/
class Solution {
public:
    typedef pair<int ,int> PII;
    int dx[4]={0,0,1,-1};
    int dy[4]={1,-1,0,0};
    
    bool visited[51][51];

    int m,n;
    int maxAreaOfIsland(vector<vector<int>>& grid) {
        m=grid.size(),n=grid[0].size();
        int _max=0;
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(grid[i][j]==1&&!visited[i][j])
                {
                    _max=max(bfs(grid,i,j),_max);
                }
            }
        }
        return _max;
    }

    int bfs(vector<vector<int>>& grid,int sr,int sc)
    {
        queue<PII> q;
        q.push({sr,sc});
        visited[sr][sc]=true;
        int count=1;
        while(!q.empty())
        {
            auto [a,b]=q.front();
            q.pop();
            for(int i=0;i<4;i++)
            {
                int x=a+dx[i],y=b+dy[i];
               if(x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == 1 && 
!visited[x][y])
                {
                    count++;
                    q.push({x,y});
                    visited[x][y]=true;
                }
            }
        }
        return count;
    }
};